# 作者: 薛文寅仟
# 2025年01月01日09时58分25秒
# 5443912@qq.com
def open_r():
    """
    读取文件 r
    以只读方式打开文件。文件的指针将会放在文件的开头，这是默认模式。
如果文件不存在，抛出异常
    :return:
    """
    file = open('file2.txt', mode='r', encoding='utf8')
    text = file.read()  # 读出来的都是字符串
    print(text)
    file.close()


def open_rw():
    """
    读取文件，写文件 r+
    以读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存
在，抛出异常(写入时，文件位置指针会跳转到尾部）
    :return:
    """
    file = open('file2.txt', mode='r+', encoding='utf8')
    text = file.read()  # 读出来都是字符串
    print(text)
    file.write('world')  # 因为上面read时光标已经到末尾了，所以写到末尾了
    file.close()


def open_w():
    """
    练习w模式  w
    以只写方式打开文件。如果文件存在会被覆盖。如果文件不存在，创建新
文件
    :return:
    """
    file = open('file3', mode='w', encoding='utf8')
    file.write('hello坚持学习')
    file.close()


def open_a():
    """
    练习a模式，每次写的时候写到文件末尾
    追加方式打开文件。如果该文件已存在，文件指针将会放在文件的结
尾。如果文件不存在，创建新文件进行写入
    :return:
    """
    file = open('file1', mode='a', encoding='utf8')
    file.write('how')  # 使用r+模式的话，打开后在开头，内容直接覆盖
    file = open('file1', mode='r+', encoding='utf8')
    file.write('how')
    file.close()


def use_readline():
    # 打开文件
    file = open('file2.txt', encoding='utf8')

    while True:
        # 读取一行内容
        text = file.readline()
        # 判断是否读到内容
        if not text:
            break
        # 每读取一行的末尾已经有了一个 `\n`
        print(text, end="")

    # 关闭文件
    file.close()


if __name__ == '__main__':
    # open_r()
    # open_rw()
    # open_w()
    # open_a()
    use_readline()